#include <gpumonitorfactory.h>
#include <nvgpumonitor.h>
#include <amdgpumonitor.h>
#include <intelgpumonitor.h>
#include <memory>

std::shared_ptr<GpuMonitorInterface> GpuMonitorFactory::createGpuMonitor(GPUVendor &gpuvendor)
{
    if (gpuvendor == GPUVendor::NV)
    {
        return std::make_shared<NVGpuMonitor>();
    }
    else if (gpuvendor == GPUVendor::AMD)
    {
        return std::make_shared<AMDGpuMonitor>();
    }
    else if (gpuvendor == GPUVendor::Intel)
    {
        return std::make_shared<IntelGpuMonitor>();
    }
    else
    {
        return nullptr;
    }
}
